/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:lenovo
 * Date:2024-04-25
 * Time:13:42
 */
public class test {
    //方法函数，不调用就不会运行
    public static void main1(String[] args) {
        System.out.println(10);
        final int A=10;
        System.out.println(A);
        //Integer:术语：包装类
        //通俗理解:int的plus版本
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.MAX_VALUE);
        Integer b=10;
        System.out.println(b);
    }

    public static void main2(String[] args) {
        //长整型：8个字节
        //-2^63-1    2^63
        long a=10L;
        //long a=10l;
        System.out.println(Long.MIN_VALUE);
        System.out.println(Long.MIN_VALUE);
    }

    public static void main3(String[] args) {
        short sh=10;
        //短整型：2个字节
        //-2^15 2^15-1
        System.out.println(sh);
        System.out.println(Short.MIN_VALUE);
        System.out.println(Short.MAX_VALUE);
    }

    public static void main4(String[] args) {
        byte a=127;
        //字节型：1个字节
        //char
        //-2^7  2^7-1
        System.out.println(a);
        System.out.println(Byte.MIN_VALUE);
        System.out.println(Byte.MAX_VALUE);
    }

    public static void main5(String[] args) {
        double d=12.5;
        //8个字节
        //浮点数一定是一个近似值
        float f=12.5f;
        //float f=12.5;
        //对于小数来说默认是double类型
        System.out.println(d);
        System.out.println(f);
    }

    public static void main6(String[] args) {
        int a=1;
        double b=2;
        System.out.println(a/b);
    }

    public static void main7(String[] args) {
        char ch1='a';
        char ch2='高';
        //char类型是2个字节
        //可表示汉字
        //Unicode字符集
        Character c='p';
        System.out.println(ch1);
        System.out.println(ch2);
        System.out.println(c);
    }

    public static void main8(String[] args) {
        //布尔类型没有明确说明大小是多少字节
        //0假1真在java中不适用了
        //所有boolean与int不能相互转换
        //取值只有ture or false
        boolean b=true;
        System.out.println(b);
    }

    public static void main9(String[] args) {
        int a=10;
        long b=100L;
        b=a;
        //Java具有强类型检查
        //a=b;有问题
        a=(int)b;
        //这样强制类型转换虽然编译不会报错，但是存在风险：精度丢失
        //不相干的类型之间不能强制转换
        byte c=10;
        int d=128;
        c=(byte)d;
        System.out.println(c);
    }

    public static void main10(String[] args) {
        byte a=10;
        byte b=20;
        //byte c=a+b;
        //byte c=(byte)a+b;
        //对于小于四个字节的数据，会先自动提升为4个字节后再运算
        //由于计算机的cpu通常是以4个字节为单位从内存中读写数据，为了硬件方便
        int c=a+b;
    }

    public static void main11(String[] args) {
        //字符串类型
        String str1="hello ";
        System.out.println(str1);
        String str2="world";
        System.out.println(str1+str2);
        //使用“+”号可以实现字符串的拼接
        System.out.println((str1+str2).length());
        //Java中说字符串的时候没有所谓的\0的说法
        String str="hello";
        System.out.println(str.charAt(0));
        int a=10;
        //a==10
        System.out.println("a="+a);
        //前面是字符串，加号可拼接
        int c=20;
        System.out.printf("a=%d\n",a);
        System.out.println("a="+a+c);
        //一开始是字符串,后面全部拼接
        System.out.println(a+c+"=a+c");
        //先求和后拼接
    }

    public static void main12(String[] args) {
        //int 转 String
        //方法一：
        int a=123;
        String str=a+"";
        System.out.println(str);
        System.out.println("======");
        //方法二：
        String str1=String.valueOf(a);
        System.out.println(str1);
    }

    public static void main13(String[] args) {
        //String 转 int
        String s="123";
        //int a=Integer.valueOf(s);//底层实现 parseInt
        int a=Integer.parseInt(s);
        System.out.println(a+1);
    }

    public static void main14(String[] args) {
        //System.out.println(5/0);
        //异常
        //算数异常
        System.out.println(10%3);//1
        System.out.println(-10%3);//-1
        //正负取决于前面那个数的正负
        System.out.println(11.5%2);
        //Java可以对小数进行求余
        //操作符两边类型不一致时向高类型转换
    }

    public static void main(String[] args) {
        /*int a=10;
        long b=20;
        //a=a+b;报错
        a+=b;//增值运算符会帮你进行类型转换
        System.out.println(a);*//* byte a=130;
        float b=3.5;*/

    }
}
//字面常量
//final:类似于C语言中的final，被final修饰后变量不可修改
//Java中的数据类型

//1.基本数据类型（八种）
//整型 byte short int long
//浮点 float double
//字符 char
//布尔 boolean
//2.引用数据类型
//数组，类，接口......String

//不管你是多少位系统,Java当中的数据类型占用的字节数是一定的
//好处：可移植性高  不区分是否有符号

//JVM其实是C/C++代码实现的一个软件

//变量+运算符=表达式

//语言就是工具
